#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
using Cephei.QL;
namespace Cephei.QL.Cashflows
{
    /// <summary> 
	/// ! This cash flow is not a coupon, i.e., there's no accrual.  The amount is either i(T)/i(0) or i(T)/i(0) - 1, depending on the growthOnly parameter.  We expect this to be used inside an instrument that does all the date adjustment etc., so this takes just dates and does not change them. growthOnly = false means i(T)/i(0), which is a bond-type setting. growthOnly = true means i(T)/i(0) - 1, which is a swap-type setting.
	/// </summary>
    [Guid ("C5B1455B-2238-4ea6-9501-D343D9D5E3ED"),ComVisible(true)]
	public interface IIndexedCashFlow : Cephei.QL.ICashFlow
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 Double Amount {get;}
        /// <summary> 
		/// 
		/// </summary>
		 DateTime BaseDate {get;}
        /// <summary> 
		/// 
		/// </summary>
		 DateTime Date {get;}
        /// <summary> 
		/// 
		/// </summary>
		 DateTime FixingDate {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.IIndex Index {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Double Notional {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Boolean GrowthOnly {get;}
        /// <summary> 
		/// 
		/// </summary>
		 IIndexedCashFlow Update {get;}
    }   

    /// <summary> 
	/// ! This cash flow is not a coupon, i.e., there's no accrual.  The amount is either i(T)/i(0) or i(T)/i(0) - 1, depending on the growthOnly parameter.  We expect this to be used inside an instrument that does all the date adjustment etc., so this takes just dates and does not change them. growthOnly = false means i(T)/i(0), which is a bond-type setting. growthOnly = true means i(T)/i(0) - 1, which is a swap-type setting. Factory
	/// </summary>
   	[ComVisible(true)]
    public interface IIndexedCashFlow_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    IIndexedCashFlow Create (Double notional, Cephei.QL.IIndex index, DateTime baseDate, DateTime fixingDate, DateTime paymentDate, Microsoft.FSharp.Core.FSharpOption<Boolean> growthOnly);
    }
}

